package types

// 用户登录请求
type LoginReq struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

// 用户登录响应
type LoginResp struct {
	Token    string `json:"token"`
	UserInfo User   `json:"userInfo"`
}

// 用户信息
type User struct {
	Id       int64  `json:"id"`
	Username string `json:"username"`
	Name     string `json:"name"`
	Role     string `json:"role"`
	Phone    string `json:"phone,omitempty"`
}

// 油品信息
type FuelType struct {
	Id    int64   `json:"id"`
	Type  string  `json:"type"`
	Name  string  `json:"name"`
	Price float64 `json:"price"`
}

// 创建订单请求
type CreateOrderReq struct {
	FuelType      string  `json:"fuelType"`
	FuelPrice     float64 `json:"fuelPrice"`
	Volume        float64 `json:"volume"`
	PrepaidAmount float64 `json:"prepaidAmount"`
	Status        string  `json:"status,optional"` // 可选状态，支持 "paid" 表示已支付
}

// 订单信息
type Order struct {
	Id            int64   `json:"id"`
	OrderNo       string  `json:"orderNo"`
	UserId        int64   `json:"userId"`
	UserName      string  `json:"userName"`
	FuelType      string  `json:"fuelType"`
	FuelPrice     float64 `json:"fuelPrice"`
	Volume        float64 `json:"volume"`
	PrepaidAmount float64 `json:"prepaidAmount"`
	ActualVolume  float64 `json:"actualVolume,omitempty"`
	ActualAmount  float64 `json:"actualAmount,omitempty"`
	Status        string  `json:"status"`
	CreateTime    string  `json:"createTime"`
	UpdateTime    string  `json:"updateTime"`
	CompleteTime  string  `json:"completeTime,omitempty"`
}

// 订单列表请求
type OrderListReq struct {
	Status string `form:"status,optional"`
	Page   int64  `form:"page,default=1"`
	Size   int64  `form:"size,default=10"`
}

// 订单列表响应
type OrderListResp struct {
	List  []Order `json:"list"`
	Total int64   `json:"total"`
}

// 完成订单请求
type CompleteOrderReq struct {
	OrderId       int64   `json:"orderId"`
	ActualVolume  float64 `json:"actualVolume"`
	ActualAmount  float64 `json:"actualAmount"`
}

// 更新油品价格请求
type UpdateFuelPriceReq struct {
	Id    int64   `json:"id"`
	Price float64 `json:"price"`
}

// 库存信息
type Inventory struct {
	Id       int64   `json:"id"`
	FuelType string  `json:"fuelType"`
	Stock    float64 `json:"stock"`
	MinStock float64 `json:"minStock"`
	MaxStock float64 `json:"maxStock"`
}

// 更新库存请求
type UpdateInventoryReq struct {
	Id    int64   `json:"id"`
	Stock float64 `json:"stock"`
}

// 销售报表
type SalesReport struct {
	Date         string  `json:"date"`
	TotalOrders  int64   `json:"totalOrders"`
	TotalAmount  float64 `json:"totalAmount"`
	TotalVolume  float64 `json:"totalVolume"`
	FuelTypeData []struct {
		FuelType string  `json:"fuelType"`
		Orders   int64   `json:"orders"`
		Amount   float64 `json:"amount"`
		Volume   float64 `json:"volume"`
	} `json:"fuelTypeData"`
}

// 报表查询请求
type ReportReq struct {
	StartDate string `form:"startDate"`
	EndDate   string `form:"endDate"`
}

// 微信登录请求
type WechatLoginReq struct {
	Code      string `json:"code"`
	NickName  string `json:"nickName,optional"`
	AvatarUrl string `json:"avatarUrl,optional"`
	Gender    int    `json:"gender,optional"`
	City      string `json:"city,optional"`
	Province  string `json:"province,optional"`
	Country   string `json:"country,optional"`
}

// 微信支付请求
type WechatPayReq struct {
	OrderId     int64  `json:"orderId"`
	Description string `json:"description"`
	Amount      int64  `json:"amount"` // 金额，单位：分
}

// 微信支付响应
type WechatPayResp struct {
	TimeStamp string `json:"timeStamp"`
	NonceStr  string `json:"nonceStr"`
	Package   string `json:"package"`
	SignType  string `json:"signType"`
	PaySign   string `json:"paySign"`
}

// 支付结果通知
type PaymentNotifyReq struct {
	TransactionId string `json:"transaction_id"`
	OutTradeNo    string `json:"out_trade_no"`
	TotalFee      int64  `json:"total_fee"`
	ResultCode    string `json:"result_code"`
}

// 创建支付订单请求（支付前）
type CreatePaymentOrderReq struct {
	Description string  `json:"description"`
	Amount      int64   `json:"amount"` // 金额，单位：分
	FuelType    string  `json:"fuelType"`
	Volume      float64 `json:"volume"`
	FuelPrice   float64 `json:"fuelPrice"`
}

// 创建支付订单响应
type CreatePaymentOrderResp struct {
	PaymentId string `json:"paymentId"`
	TimeStamp string `json:"timeStamp"`
	NonceStr  string `json:"nonceStr"`
	Package   string `json:"package"`
	SignType  string `json:"signType"`
	PaySign   string `json:"paySign"`
}